/**
 * Created by wangkui on 2016/1/26.
 */
var _ = require('lodash'),
    url = require("url");
var Pano = require('./../../models/schema/PanoSchema.js');

// 全景列表（2015-10-30修改为按sequence升序返回数据）
exports.index = function(req, res) {
    var where = {status: 'publish'};
    var args=url.parse(req.url,true).query;
    var fields = '';
    if( args.fields != undefined){
        fields = args.fields.replace(/\,/g,' ');
    }
    Pano.find(where,fields,function (err, panos) {
        if(err) { return handleError(res, err); }
        return res.status(200).jsonp(panos);
    }).sort({"sequence":1});
};

exports.getpanos = function(req,res)
{
    var args=url.parse(req.url,true).query;
    var limit = 100;
    var skip = 0;
    if(args.limit) limit = args.limit;
    if(args.skip) skip = args.skip;

    var where = {status: 'publish'};
    var fields = '';
    if( args.fields != undefined){
        fields = args.fields.replace(/\,/g,' ');
    }

    Pano.count(where,function(err,total){
        if(err) { return handleError(res, err); }
        Pano.find(where,fields,function(err,panos){
            if(err) { return handleError(res, err); }
            var result = {total:total,skip:skip,data:panos};
            return res.status(200).json(result);
        }).limit(limit).skip(skip).sort({"sequence":1});
    });
}

//所有全景，含未发布的
exports.all = function(req, res) {
    Pano.find(function (err, panos) {
        if(err) { return handleError(res, err); }
        return res.status(200).jsonp(panos);
    });
};

// 根据PanoId返回一条记录内容
exports.show = function(req, res) {
    Pano.findByPanoId(req.params.id, function (err, pano) {
        if(err) { return handleError(res, err); }
        if(!pano) { return res.send(404); }
        return res.jsonp(pano);
    });
};

//根据用户Id,全景Id，判断该用户是否有权限查看该全景图
exports.islimited = function(req,res){
    var panoId = req.params.id;
    var userId = '';
    if(req.query && req.query.hasOwnProperty('uid')) {
        userId = req.query.uid;
    }

    res.json({panoId:panoId,userId:userId,islimited:true});
}

// 创建全景图
exports.create = function(req, res) {
    Pano.create(req.body, function(err, pano) {
        if(err) { return handleError(res, err); }
        return res.jsonp(201, pano);
    });
};

//修改全景图信息
exports.update = function(req, res) {
    if(req.body._id) { delete req.body._id; }
    Pano.findByPanoId(req.params.id, function (err, pano) {
        if (err) { return handleError(res, err); }
        if(!pano) { return res.send(404); }
        var updated = _.merge(pano, req.body);
        updated.save(function (err) {
            if (err) { return handleError(res, err); }
            return res.jsonp(200, pano);
        });
    });
};

//删除全景图
exports.destroy = function(req, res) {
    Pano.findById(req.params.id, function (err, pano) {
        if(err) { return handleError(res, err); }
        if(!pano) { return res.send(404); }
        pano.remove(function(err) {
            if(err) { return handleError(res, err); }
            return res.jsonp(204);
        });
    });
};

// 错误处理
function handleError(res, err) {
    return res.send(500, err);
}